package com.jiahe.video.util;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class AppUtil {

    public static void createDirectoryIfNotExists(String path) {
        File folder = new File(path);
        // 检查目录是否存在
        if (folder.exists()) {
            if (folder.isDirectory()) {
                //System.out.println("文件夹已存在");
            } else {
                //System.out.println("同名文件已存在，无法创建文件夹");
            }
        } else {
            // 尝试创建目录并检查是否成功
            boolean created = folder.mkdirs();
            if (created) {
                System.out.println("文件夹创建成功");
            } else {
                System.out.println("文件夹创建失败");
            }
        }
    }


    /**
     * 获取指定目录及其子目录下的所有文件
     *
     * @param directoryPath 目录路径
     * @return 所有文件的列表，如果目录不存在或不是目录则返回空列表
     */
    public static List<File> getAllFiles(String directoryPath) {
        List<File> fileList = new ArrayList<>();
        File directory = new File(directoryPath);

        // 检查目录是否存在且是一个目录
        if (!directory.exists() || !directory.isDirectory()) {
            return fileList;
        }

        // 递归查找所有文件
        findFiles(directory, fileList);
        return fileList;
    }

    /**
     * 递归查找目录下的所有文件
     *
     * @param directory 要查找的目录
     * @param fileList 存储找到的文件的列表
     */
    private static void findFiles(File directory, List<File> fileList) {
        // 获取目录下的所有文件和子目录
        File[] files = directory.listFiles();

        if (files != null) {
            for (File file : files) {
                if (file.isFile()) {
                    // 如果是文件，添加到列表
                    fileList.add(file);
                } else if (file.isDirectory()) {
                    // 如果是目录，递归查找
                    findFiles(file, fileList);
                }
            }
        }
    }


    /**
     * 将毫秒数转换为分、秒、毫秒的格式化字符串
     * @param milliseconds 输入的毫秒数
     * @return 格式化后的字符串，如"1分23秒456毫秒"或"5秒67毫秒"
     */
    public static String formatMilliseconds(long milliseconds) {
        // 处理负数情况
        if (milliseconds < 0) {
            return "请输入非负的毫秒数";
        }

        // 计算各个单位的值
        long ms = milliseconds % 1000;
        long totalSeconds = milliseconds / 1000;
        long seconds = totalSeconds % 60;
        long minutes = totalSeconds / 60;

        // 构建结果字符串
        StringBuilder sb = new StringBuilder();

        if (minutes > 0) {
            sb.append(minutes).append("m ");
        }

        sb.append(seconds).append("s ");
        sb.append(ms).append("ms");

        return sb.toString();
    }




    public static void main(String[] args) {
        System.out.println(formatMilliseconds(123456));  // 2分3秒456毫秒
        System.out.println(formatMilliseconds(5678));    // 5秒678毫秒
        System.out.println(formatMilliseconds(7000));    // 7秒0毫秒
        System.out.println(formatMilliseconds(0));       // 0秒0毫秒
        System.out.println(formatMilliseconds(-100));    // 请输入非负的毫秒数

    }
}
